﻿ using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HeathCareSystem.wuc
{
    public partial class wucThemBenhAn : System.Web.UI.UserControl
    {
        bool thongBao_XetNghiem = false;
        bool thongBao_ToaThuoc = false;
        string tenBenhNhan;
        protected void Page_Load(object sender, EventArgs e)
        {
            EnabledPanel(true, false, false, false);
            Fill_GV();
            Fill_Control();
        }

        private void EnabledPanel(bool bPanelBenhAn, bool bPanelToaThuoc, bool bPanelKQXetNghiem, bool bPanelThongBao)
        {
            pnlBenhAn.Visible = bPanelBenhAn;
            pnlToaThuoc.Visible = bPanelToaThuoc;
            pnlKQXetNghiem.Visible = bPanelKQXetNghiem;
            pnlThongBao_ChuaCoToaThuoc.Visible = bPanelThongBao;
        }

        #region Panel Benh An       
        protected void Fill_Control()
        {
            ddlChanDoan.DataTextField = "TenBenh";
            ddlChanDoan.DataValueField = "MaBenh";
            ddlChanDoan.DataSource = LoaiBenhBUS.DanhSachLoaiBenh();
            ddlChanDoan.DataBind();
        }

        protected void Fill_GV()
        {
            List<BenhNhanTrongNgayDTO> lst = BenhNhanTrongNgayBUS.DanhSachBenhNhanTrongNgay();
            List<BenhNhanTrongNgayV> lstv = new List<BenhNhanTrongNgayV>();
            foreach (BenhNhanTrongNgayDTO bn in lst)
            {
                lstv.Add(new BenhNhanTrongNgayV(bn));
            }
            gvThongTinBN.DataSource = lstv;
            gvThongTinBN.DataBind();
        }

        protected ChiTietBenhAnDTO LayThongTinTuNguoiDung()
        {
            ChiTietBenhAnDTO ctba = new ChiTietBenhAnDTO();
            try
            {
                ctba.maBenhNhan = txtMa.Text;
                ctba.ngayKham = DateTime.Parse(txtNgay.Text);
                ctba.trieuChung = txtTrieuChung.Text;
                ctba.ketLuan = txtKetLuan.Text;
                ctba.ngayTaiKham = DateTime.Parse(txtNgayTai.Text);
                // Lấy thông tin bệnh nhân trong ngày theo mã
                BenhNhanTrongNgayDTO bn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);
                ctba.maNguoiDung = bn.maBacSi;
                ctba.maBenhNhan = bn.maBenhNhan;
                ctba.maChiTietBenhAn = bn.maChiTietBenhAn;
            }
            catch (Exception)
            {
                ctba = null;
            }
            return ctba;
        }

        // Thêm chi tiết bệnh án
        protected void btnThem_Click(object sender, EventArgs e)
        {
            int flag = 0;
            bool kq = false;
            ChiTietBenhAnDTO ctba = LayThongTinTuNguoiDung();
            if (ChiTietBenhAnBUS.KiemTraTonTai(ctba.maChiTietBenhAn))
            {
                ChiTietBenhAnBUS.CapNhat(ctba);
                flag = 1;
            }
            else
                kq = ChiTietBenhAnBUS.Them(ctba);
            ChanDoanBenhDTO cdb = new ChanDoanBenhDTO();
            cdb.maChiTietBenhAn = ctba.maChiTietBenhAn;
            cdb.maBenh = int.Parse(ddlChanDoan.SelectedValue);
            if (ChanDoanBenhBUS.KiemTraTonTai(cdb.maChiTietBenhAn))
                ChanDoanBenhBUS.CapNhat(cdb);
            else
                ChanDoanBenhBUS.Them(cdb);
            if (flag == 0)
            {
                if (kq)
                    lblThongBao.Text = "Thêm thành công!";
                else
                    lblThongBao.Text = "Thêm thất bại!";
            }
            else
            {
                lblThongBao.Text = "Cập nhật thành công";
            }
            lbtnThuoc.Enabled = false;
        }

        protected void btnThoat_Click(object sender, EventArgs e)
        {
            lblThongBao.Text = "";
            txtKetLuan.Text = "";
            txtMa.Text = "";
            txtNgay.Text = "";
            txtNgayTai.Text = "";
            txtTrieuChung.Text = "";
            ddlChanDoan.SelectedIndex = 0;
            btnThem.Text = "Thêm hồ sơ";
            lbtnThuoc.Enabled = false;
        }
        protected void Clear()
        {
            lblThongBao.Text = "";
            txtKetLuan.Text = "";
            txtNgay.Text = "";
            txtNgayTai.Text = "";
            txtTrieuChung.Text = "";
            ddlChanDoan.SelectedIndex = 0;
        }

        protected void gvThongTinBN_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {

        }

        protected void HienThiThongTin(BenhNhanTrongNgayDTO bn)
        {
            txtMa.Text = bn.maSoKhamBenh;
            BenhNhanTrongNgayDTO bntn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);
            if (ChiTietBenhAnBUS.KiemTraTonTai(bntn.maChiTietBenhAn))
            {
                ChiTietBenhAnDTO ct = ChiTietBenhAnBUS.LayThongTinTuMa(bntn.maChiTietBenhAn);
                txtKetLuan.Text = ct.ketLuan;
                txtNgay.Text = string.Format("{0:MM/dd/yyyy}", ct.ngayKham);
                if (ct.ngayTaiKham != new DateTime(0001, 01, 01))
                    txtNgayTai.Text = string.Format("{0:MM/dd/yyyy}", ct.ngayTaiKham);
                else
                    txtNgayTai.Text = "";
                txtTrieuChung.Text = ct.trieuChung;
                if (ChanDoanBenhBUS.LayThongTinTheoMa(bntn.maChiTietBenhAn) != null)
                    ddlChanDoan.SelectedValue = ChanDoanBenhBUS.LayThongTinTheoMa(bntn.maChiTietBenhAn).maBenh.ToString();
                btnThem.Text = "Cập nhật";
            }
            else
            {
                Clear();
                btnThem.Text = "Thêm hồ sơ";
            }
        }

        protected void gvThongTinBN_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            // Dòng select
            int irow = Convert.ToInt32(e.CommandArgument);
            string SoKhamBenh = gvThongTinBN.Rows[irow].Cells[1].Text;
            // Lấy thông tin bệnh nhân trong ngày theo mã
            BenhNhanTrongNgayDTO bn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(SoKhamBenh);
            //ten benh nhan;
            txtTen_HoSoBenhAn.Text= gvThongTinBN.Rows[irow].Cells[2].Text;

            lbtnThuoc.Enabled = true;
            lbtnXetNghiem.Enabled = true;
            HienThiThongTin(bn);
        }

        protected void gvThongTinBN_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvThongTinBN.PageIndex = e.NewPageIndex;
            Fill_GV();
        }

        protected void ddlLoc_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void lbtnThuoc_Click(object sender, EventArgs e)
        {
            BenhNhanTrongNgayDTO bntn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);
            ChiTietBenhAnDTO ctBenhAn = ChiTietBenhAnBUS.LayThongTinTuMa(bntn.maChiTietBenhAn);
            if (new DonThuocDAO().KiemTraToaThuoc(bntn.maChiTietBenhAn, ctBenhAn.ngayKham.ToShortDateString()))
            {
                EnabledPanel(false, true, false, false);
                txtTenBenhNhan.Text = txtTen_HoSoBenhAn.Text;
                txtNgayLapToaThuoc.Text = txtNgay.Text;
                Fill_GV_DonThuoc();
            }
            else
            {
                lblPanelThongBao.Text = "Toa Thuốc";
                EnabledPanel(false, false, false, true);
                lblCauHoi.Text = "Chưa Có Toa Thuốc Cho Bệnh Nhân Này, Bạn Có Muốn Tạo Toa Thuốc Không?";
                thongBao_ToaThuoc = true;
                thongBao_XetNghiem = false;
                btnDongY.Visible = true;
                btnKhongDongY.Enabled = true;
                btnKhongDongY.Text = "Không"; 
            }
        }

        protected void lbtnXetNghiem_Click(object sender, EventArgs e)
        {
            lblPanelThongBao.Text = "Phiếu Xét Nghiệm";
            EnabledPanel(false, false, false, true);
            lblCauHoi.Text = "Bệnh Nhân này không có tham gia xét nghiệm?";
            thongBao_ToaThuoc = false;
            thongBao_XetNghiem = true;
            btnDongY.Visible = false;
            btnKhongDongY.Text = "Quay Về";
        }
        #endregion

        #region Panel Toa Thuoc
        protected void btnThemDS_Click(object sender, EventArgs e)
        {
            EnabledPanel(false, true, false, false);
            BenhNhanTrongNgayDTO bntn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);            
            int maChiTietBenhAn = bntn.maChiTietBenhAn;            
            string chiDinhThem = "";
            ChiTietDonThuocDTO ctdtDTO = new ChiTietDonThuocDTO();
            ctdtDTO.maDonThuoc = new DonThuocDAO().LayThongTinDonThuoc(maChiTietBenhAn, txtNgay.Text).maDonThuoc;
            ctdtDTO.maThuoc = new ThuocDAO().LayThongTinThuoc(txtTenThuoc.Text).maThuoc;
            ctdtDTO.soLuong = int.Parse(txtSoLuong.Text);
            ctdtDTO.chiDinh1 = txtDung.Text;
            ctdtDTO.chiDinh2 = txtLan.Text;
            if (rbtnSauAn.Checked == true || rbtnTruocAn.Checked == true)
            {
                if (rbtnSauAn.Checked == true)
                    chiDinhThem = rbtnSauAn.Text;
                else
                    if (rbtnTruocAn.Checked == true)
                        chiDinhThem = rbtnTruocAn.Text;
            }
            ctdtDTO.chiDinhThem = chiDinhThem;
            new ChiTietDonThuocDAO().ThemChiTietDonThuocMoi(ctdtDTO);

            Fill_GV_DonThuoc();
        }

        private void Fill_GV_DonThuoc()
        {
            List<ChiTietDonThuocDTO> listThuoc = new List<ChiTietDonThuocDTO>();
            BenhNhanTrongNgayDTO bntn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);  
            listThuoc = new ChiTietDonThuocDAO().DanhSachDonThuoc(bntn.maChiTietBenhAn, txtNgayLapToaThuoc.Text);

            gvDanhSach.DataSource = listThuoc;
            gvDanhSach.DataBind();
        }

        protected void gvDanhSach_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            BenhNhanTrongNgayDTO bntn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);
            EnabledPanel(false, true, false, false);
            int viTriDongDuocChon = e.RowIndex;
            int iMaChiTietDonThuoc = int.Parse(gvDanhSach.Rows[e.RowIndex].Cells[0].Text);
            //string maChiTietDonThuoc = gvDanhSach.SelectedRow.Cells[0].ToString();
            new ChiTietDonThuocDAO().XoaChiTietDonThuoc(iMaChiTietDonThuoc);

            Fill_GV_DonThuoc();
        }
        #endregion
        
        #region Panel Thong Bao Tao Toa Thuoc
        protected void btnDongY_Click(object sender, EventArgs e)
        {            
            BenhNhanTrongNgayDTO bntn = BenhNhanTrongNgayBUS.LayThongTinTheoMa(txtMa.Text);
            ChiTietBenhAnDTO ctBenhAn = ChiTietBenhAnBUS.LayThongTinTuMa(bntn.maChiTietBenhAn);
            DonThuocDTO dthuoc = new DonThuocDTO();
            dthuoc.ghiChu = "";
            dthuoc.maChiTietBenhAn = bntn.maChiTietBenhAn;
            dthuoc.ngayLap = ctBenhAn.ngayKham;

            bool flag = new DonThuocBUS().ThemDonThuocMoi(dthuoc);

            txtTenBenhNhan.Text = tenBenhNhan;
            txtNgayLapToaThuoc.Text = txtNgay.Text;
            //hien thi Toa Thuoc
            EnabledPanel(false, true, false, false);
        }

        protected void btnKhongDongY_Click(object sender, EventArgs e)
        {
            EnabledPanel(true, false, false, false);
        }
        #endregion               

        protected void pnlThongBao_ChuaCoToaThuoc_Load(object sender, EventArgs e)
        {
            
        }

        protected void btnQuayVe_Click(object sender, EventArgs e)
        {
            EnabledPanel(true, false, false, false);
        }

        #region Panel Phieu Xet Nghiem
        #endregion
    }
}